1. Field of the Invention
The present invention relates to networks, and more particularly, to sharing input/output (I/O) devices.
2. Background of the Invention
Computing systems typically include several functional components. These components may include a central processing unit (CPU), main memory, input/output (“I/O”) devices, and streaming storage devices (for example, tape drives). In conventional systems, the main memory is coupled to the CPU via a system bus or a local memory bus. The main memory is used to provide the CPU access to data and/or program information that is stored in main memory at execution time. Typically, the main memory is composed of random access memory (RAM) circuits.
A computer system with the CPU and main memory is often referred to as a host system. Host systems are used in various network applications, including TCP/IP networks, storage area networks (“SANs”), and various types of external device attachment.
Host systems often communicate with peripheral devices via an interface such as the Peripheral Component Interconnect (“PCI”) interface, a local bus standard using parallel data transfer that was developed by Intel Corporation®, or the extension of the PCI standard known as PCI-X.
More recently, PCI-Express, a standard interface incorporating PCI transaction protocols at the logical level, but using serial data transfer at the physical level has been developed to offer better performance than PCI or PCI-X. PCI-Express topology uses a PCI-Express switch to route packets. The PCI-Express standard is incorporated herein by reference in its entirety.
One disadvantage of the PCI-Express topology in general and the PCI-Express Switch in particular is that only a single host system at a given time can access a single device, which may be an input/output
(I/O) device, for example, a host bus adapter (“HBA”). For efficient use of devices (for example, I/O devices) in networks in general and storage area networks in particular, it is desirable that plural host systems be able to share an I/O device. Conventional PCI-Express switches do not support this option. Existing operating systems also do not allow sharing of I/O devices.
Therefore, what is required is a system and method that allows plural host systems to share an I/O device.